跳到主要内容

日志全收集平台New Relic体验(cloudflare workers日志推送/Java日志推送)

1. 前言​

在研究Cloudflare有啥好玩的东西时候,我突然想到Cloudflare workers的日志能不能汇聚到一起呢? 然后发现Cloudflare有推送日志的到其他平台的功能,在我逐一尝试之后发现New Relic简直太牛了吧,能够吧各种应用的各种平台日志都收集到一起,

2. New Relic简介​

谷歌一搜,对其的介绍是:New Relic 是一个全栈可观察性平台,可为应用程序性能、基础结构监视、日志管理、错误跟踪、真实用户监视等提供单一事实来源。

2.1 可以汇聚各种平台的各种应用日志统一管理查看​

能够集成的日志多到一页放不下:

有非常多的种类

2.2 关键是新用户都提供100GB的日志存储空间​

新用户也不会跟一些云盘一样扣扣搜搜只给5GB,而是100GB

所以的福利我逐个翻译一下:

  • 一个全平台用户

    • 可使用全部 30 多种平台功能,如带有跟踪和日志功能的 APM。
  • 100 GB 数据摄取

    • 包括 New Relic Vulnerability Management 分析的安全数据。
  • 默认日志混淆

    • 用于掩盖日志中已知的信用卡和Security-number模式。
  • 无限基本用户

    • 可访问数据摄取、查询、仪表盘和警报。
  • 默认数据保留

    • 至少保留八天,以便重新创建问题并更好地了解性能。
  • 无限 Ping 监视器

    • 包括为满足你的需求而部署的 500 项综合监控检查。

说了这么多,我推送了下面几个平台的日志试了试,在进行下面的操作之前,自然你需要注册一个New Relic的账号

3. CF worker的日志推送到New Relic​

提示

在进行下面的操作之前需要先跟你说清楚的是,Cloudflare 使用Logpush 日志到其他平台是包含在Workers Paid计划中的,Free计划可能没有这个功能。

详情见这个页面: Logpush

这是在Workers Paid计划下看到的限制

3.1 配置​

在New Relic的后台,点击Integrations & Agents, 搜索Cloudflare就能找到对应的集成

而集成的方式也足够傻瓜,选择Cloudflare Dashboard, 然后下一步创建好license key后,回到CF的界面上,找到日志推送给New Relic的选项

填写New Relic需要配置的endpoint和刚刚创建的license key即可

接着要推送的日志自然是cf workers的日志

我这里选择了所有日志

完成之后则能够看到日志推送已经是激活状态了

回到New Relic, 点击Test Connection, 应该就成功了

3.2 打开你的CF workers推送​

但是此时在New Relic上其实是没有实际日志被推送过去的,我们还需要对每个worker进行一下配置

红框的都是需要打开的

3.3 检查日志推送​

上面的准备就绪之后,触发你的workers,如果你在workers的日志界面已经能看到log, 那么日志也应该已经推送到New Relic

回到New Relic, 点击左边的侧边栏选择Logs, 然后选择All logs,就能看到你的CF workers日志了!

4. docker + Java 应用的日志推送到New Relic​

推送Java的日志也类似,Integrations & Agents -> Java -> Docker

4.1 输入你的 license key, 然后到Download your Java agent files这一步。​

需要注意的是推送Java 日志需要下载他们的java agent包含在你的项目中。也就是图片中使用curl 下载的那个压缩包,解压后放在项目的根目录下。

然后下载包含license key的newrelic.yml覆盖解压后中的同名文件

例如:

4.2 马上就要完成了,修改你的Dockerfile, 在启动你的Java应用时​

下面这个是我Java项目的Dockerfile供你参考,高亮的是改动的地方

FROM azul/zulu-openjdk:17.0.13

ARG JAR_NAME
ENV PROJECT_NAME ${JAR_NAME}
ENV PROJECT_HOME /usr/local/${PROJECT_NAME}

RUN mkdir -p /usr/local/newrelic
ADD ./newrelic/newrelic.jar /usr/local/newrelic/newrelic.jar
ADD ./newrelic/newrelic.yml /usr/local/newrelic/newrelic.yml


RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN mkdir $PROJECT_HOME && mkdir $PROJECT_HOME/logs

ARG JAR_FILE
COPY ${JAR_FILE} $PROJECT_HOME/${JAR_NAME}.jar


ENTRYPOINT java -javaagent:/usr/local/newrelic/newrelic.jar -jar -XX:+UseZGC $PROJECT_HOME/$PROJECT_NAME.jar

可选的这一步直接跳过,并不会对推送日志有什么影响。可选的这一步的介绍

你可以运行容器化版本的基础架构监控代理来监控容器指标和底层主机。使用包含 New Relic 许可证密钥的代理配置。此处详细介绍了 New Relic 基础架构代理的更多配置选项。

4.3 重新打包镜像​

最后的操作自然是根据你的Dockerfile重新打包镜像然后启动,启动后需要留意你的容器是否正常,以及日志是否正常

回到New Relic的Logs界面,就能看到你的日志了